color chooser: Use headerbar
authorWilliam Jon McCann <william.jon.mccann@gmail.com>
Sun, 8 Dec 2013 14:13:25 +0000 (15:13 +0100)
committerMatthias Clasen <mclasen@redhat.com>
Fri, 17 Jan 2014 22:52:08 +0000 (17:52 -0500)
Make GtkColorChooserDialog use a headerbar when desired.

https://bugzilla.gnome.org/show_bug.cgi?id=720059

gtk/gtkcolorchooserdialog.c
gtk/gtkcolorchooserdialog.ui
gtk/gtkcolorchooserdialog.ui.h

index 1998cbd030b8d48fb4f3596cf0092db683497185..f9316b1e3418477ce242da48b2a7678060a9fcf9 100644 (file)
 #include "config.h"
 
 #include "gtkdialog.h"
+#include "gtkdialogprivate.h"
 #include "gtkbutton.h"
 #include "gtkbox.h"
 #include "gtkprivate.h"
 #include "gtkintl.h"
+#include "gtksettings.h"
 
 #include "gtkcolorchooserprivate.h"
 #include "gtkcolorchooserdialog.h"
@@ -42,9 +44,6 @@
 struct _GtkColorChooserDialogPrivate
 {
   GtkWidget *chooser;
-
-  GtkWidget *select_button;
-  GtkWidget *cancel_button;
 };
 
 enum
@@ -92,10 +91,12 @@ color_activated_cb (GtkColorChooser *chooser,
 }
 
 static void
-selected_cb (GtkButton *button,
-             GtkDialog *dialog)
+gtk_color_chooser_dialog_response (GtkDialog *dialog,
+                                   gint       response_id,
+                                   gpointer   user_data)
 {
-  save_color (GTK_COLOR_CHOOSER_DIALOG (dialog));
+  if (response_id == GTK_RESPONSE_OK)
+    save_color (GTK_COLOR_CHOOSER_DIALOG (dialog));
 }
 
 static void
@@ -104,6 +105,22 @@ gtk_color_chooser_dialog_init (GtkColorChooserDialog *cc)
   cc->priv = gtk_color_chooser_dialog_get_instance_private (cc);
 
   gtk_widget_init_template (GTK_WIDGET (cc));
+  gtk_dialog_set_use_header_bar_from_setting (GTK_DIALOG (cc));
+  gtk_dialog_add_buttons (GTK_DIALOG (cc),
+                          _("_Cancel"), GTK_RESPONSE_CANCEL,
+                          _("_Select"), GTK_RESPONSE_OK,
+                          NULL);
+  gtk_dialog_set_default_response (GTK_DIALOG (cc), GTK_RESPONSE_OK);
+
+G_GNUC_BEGIN_IGNORE_DEPRECATIONS
+  gtk_dialog_set_alternative_button_order (GTK_DIALOG (cc),
+                                           GTK_RESPONSE_OK,
+                                           GTK_RESPONSE_CANCEL,
+                                           -1);
+G_GNUC_END_IGNORE_DEPRECATIONS
+
+  g_signal_connect (cc, "response",
+                    G_CALLBACK (gtk_color_chooser_dialog_response), NULL);
 }
 
 static void
@@ -203,9 +220,6 @@ gtk_color_chooser_dialog_class_init (GtkColorChooserDialogClass *class)
   gtk_widget_class_set_template_from_resource (widget_class,
                                               "/org/gtk/libgtk/gtkcolorchooserdialog.ui");
   gtk_widget_class_bind_template_child_private (widget_class, GtkColorChooserDialog, chooser);
-  gtk_widget_class_bind_template_child_private (widget_class, GtkColorChooserDialog, cancel_button);
-  gtk_widget_class_bind_template_child_private (widget_class, GtkColorChooserDialog, select_button);
-  gtk_widget_class_bind_template_callback (widget_class, selected_cb);
   gtk_widget_class_bind_template_callback (widget_class, propagate_notify);
   gtk_widget_class_bind_template_callback (widget_class, color_activated_cb);
 }
index 7f5c4c5506516d9f4a282d9e8961cb8a68d2e7ee..8a64c4a5855c267f6aee0638c9582f873e2d552e 100644 (file)
         <property name="can_focus">False</property>
         <property name="orientation">vertical</property>
         <property name="spacing">2</property>
-        <child internal-child="action_area">
-          <object class="GtkButtonBox" id="dialog-action_area1">
-            <property name="can_focus">False</property>
-            <property name="layout_style">end</property>
-            <child>
-              <object class="GtkButton" id="cancel_button">
-                <property name="label" translatable="yes">_Cancel</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="can_default">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_underline">True</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">True</property>
-                <property name="position">0</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkButton" id="select_button">
-                <property name="label" translatable="yes">_Select</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="can_default">True</property>
-                <property name="has_default">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_underline">True</property>
-                <signal name="clicked" handler="selected_cb" swapped="no"/>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">True</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">True</property>
-            <property name="pack_type">end</property>
-            <property name="position">0</property>
-          </packing>
-        </child>
         <child>
           <object class="GtkColorChooserWidget" id="chooser">
             <property name="visible">True</property>
@@ -74,9 +30,5 @@
         </child>
       </object>
     </child>
-    <action-widgets>
-      <action-widget response="-6">cancel_button</action-widget>
-      <action-widget response="-5">select_button</action-widget>
-    </action-widgets>
   </template>
 </interface>
index af0ef0045a523bd208ec0a134ab4e565995a75bc..bc175710a672bfa0a54681fc09611f23c56315a1 100644 (file)
@@ -1,3 +1 @@
 N_("Select a Color");
-N_("_Cancel");
-N_("_Select");